1. Field
The present invention relates generally to the processing of user interface actions, and more specifically, to the selective providing of user interface actions to associated applications.
2. Background
Advances in technology have resulted in smaller and more powerful personal computing devices. For example, there currently exist a variety of portable wireless telephones, personal digital assistants (PDAs), and paging devices that are small, lightweight, and can be easily carried by users. Typically, these devices are severely resource constrained. For example, the screen size, amount of available memory and file system space, amount of input and output capabilities and processing capability may be each limited by the small size of the device. Further, although all types of computing devices, including both severely and non-severely resource constrained devices, generally reap the benefit from the introduction of new computing techniques that provide increased computing capabilities within a current or smaller space requirements, it is the typically the severely constrained devices that benefit the most.
Currently, a wide variety of computing devices, including some personal computing devices, contain computing capabilities that include user interface (U/I) systems that track and record U/I events/actions. Such events/actions typically include key strokes and pointer (mouse or pen) movements and each event/action has its own corresponding event/action code. Pointer movements, for example, are known to have several event/action types (pen events/actions), including: pen-up, pen-down and pen-drag. Event/action codes are typically generated by the periodic polling of the corresponding U/I devices by the U/I system. For example, if a pen is detected to have changed its contact position with respect to a previous position in a previous time period, then an event/action code is generated by the U/I system where the event/action code uniquely identifies the event/action as a pen-drag with a current pen location of (x,y).
As noted above, events/actions are generated based on the periodic sampling of the corresponding U/I device. Typically, sampling periods are set to a length that is determined to be neither too short nor too long with respect to operations performed by average applications. If set to be too short, pointer movement events/actions generated, for example, may be so numerous as to overwhelm an application such that the corresponding application, for example, spends a large portion of time displaying each of the event/action locations while either the pointer continues to generate additional events/actions or while the user waits for the screen to catch-up with the actions of the user. Although efforts can be made to attempt to handle the massive data, either by, for example, simply dropping events/actions as they occur (i.e., failing to queue them once the queue/buffer reaches a certain size), or doing nothing and simply allowing the display to significantly lag behind the user's actions, neither of the corresponding outcomes represent an acceptable solution. If, in contrast, the period is set to be too long, applications that require higher resolution data, for example, handwriting recognition software, would not have sufficient data available to perform as desired.
One popular approach is the tracking of events/actions by providing both high-resolution and low-resolution buffers. In one embodiment, a high-resolution buffer tends to be associated with software having a higher sampling rate while a low-resolution buffer tends to be associated with software having a lower sampling rate. In at least some embodiments, the items captured in the high-resolution buffer are referred to as actions, while the items captured in the low-resolution buffer are referred to as events. In one such embodiment the events are a subset of the actions. In one embodiment, the most recent, or “current” action/event can be determined by examining the item located at the top of the corresponding buffer. In at least one embodiment, the high-resolution buffer is associated with a sampling rate of 100 Hertz and is associated with a handwriting sampling program.
Those systems implementing both the high and low-resolution buffers described above, also are known to be designed to provide workable solutions for applications requiring high-resolution data, such as handwriting recognition software, by providing optional access to the high-resolution buffer that can be separately accessed to retrieve the higher resolution data. As such, although many applications operate satisfactorily using solely the low-resolution buffer, other higher-resolution based applications achieve better results using the separate high-resolution buffer. Therefore, generally, systems that handle event code information identifying U/I event information, are known to contain both a high and low-resolution buffers, one for typical applications generally concerned with “current” events, and another for higher-resolution based applications that are concerned with more than just “current” events. The providing of both high and low-resolution solutions requires additional coding, data structure and processing capabilities than would be necessary if a working single buffer solution was available.
Another approach of handling the potential problems of the generation of a large backlog of events/actions is to push the responsibility of handling the backlog to the individual applications. However, this complicates the design of such applications, and introduces the possibility of having resulting different behaviors of the same application on different devices.
There is therefore a need in the art for a reduced resource intensive U/I event/action processing system that provides applications action/event data in a form that is acceptable for all applications, whether such systems require high-resolution information or whether such systems require only current location information. There is also therefore a further need to reduce the duplicative nature of storing actions in both an actions buffer and an events queue.